const adminService = require('../service/adminService')
const profileValidate = require('../validate/profileValidate')

class AdminController {

  // 后台首页
  async index(req, res) {
    let data = await adminService.showUserInfo(req.session.uid)
    // 参数2一定是一个plian Object
    res.render('admin/index.html', { data })
  }

  // 用户退出
  logout(req, res) {
    // 1.清空session中的标识数据
    req.session.username = ''
    // 重定向
    // res.redirect('/login')
    // 如果客户端是ajax过来的，就需要在客户端进行重定向
    res.send({ code: 0, msg: 'ok' })
  }

  // 个人信息修改展示
  async profile(req, res) {
    let data = await adminService.showUserInfo(req.session.uid)
    res.render('profile/index.html', { data })
  }


  // 中间件完成用户数据合法性检查 
  checkPost(req, res, next) {
    let flag = false
    let data = req.body

    // 面向过程
    /* if (!/^1[3-9]\d{9}$/.test(data.phone)) {
      flag = false
    }
    if (data.age < 1 || data.age > 200) {
      flag = false
    } */

    // 函数编程
    flag = Object.keys(data).some(key => profileValidate[key] && profileValidate[key](data[key]))
    if (flag) {
      res.send('数据不合法')
    } else {
      next()
    }
  }

  async editprofile(req, res) {
    try {
      let data = await adminService.updateUserInfo(req.session.uid, req.body)
      res.redirect('/admin')
    } catch (error) {
      res.redirect('/profile')
    }
  }
}

module.exports = new AdminController()
